package Spil;

import boundaryToMatador.*;

public class Spil {
	private final int antalSpillere = 2;
	private int spillerNr;
	private int deltagerNr;
	private boolean gameOn = true;
	private String Tres = "", Vres = "";
	
	public static void main(String[] args) {
		new Spil().start();
	}
	
	public void start() {
		Raflebaeger rafle = new Raflebaeger(); 
		Terning terning = new Terning();
		
		Spiller[] spillerListe = new Spiller[antalSpillere + 1]; //Spillertabllen oprettes
		
		GUI.create("field.txt"); //Oprettelse af felter
		
		GUI.showMessage(Tekst.Intro); //Intro
		
		for (spillerNr = 1; spillerNr < antalSpillere + 1; spillerNr++) { //Gentagelse ved alle spillerne
			spillerListe[spillerNr] = new Spiller(GUI.getUserString(Tekst.NySpiller), 1000); //Tilføjelse af spiller objekt i spillertabellen
			GUI.setCar(1, spillerListe[spillerNr].toString());
		}
		
		while (gameOn) //Runderne skal fortsætte indtil der er fundet en vinder
		{
			spillerNr = 1; //Start runde ved spiller 1
			
			do {
				GUI.getUserButtonPressed(spillerListe[spillerNr] + Tekst.Tur, Tekst.Kast); //Tekst i spillet
				
				rafle.kastTerning(terning.slag(), terning.slag()); //Raflebæger kaster de to terninger
				
				spillerListe[spillerNr].tilfoejPenge(rafle.udbetaltPenge()); //Spiller får udbetalt guldmønter
				
				GUI.removeCar(1, spillerListe[spillerNr].toString());
				GUI.setCar(rafle.visSum(), spillerListe[spillerNr].toString());
				
				GUI.showMessage(rafle.visBesked());
				
				GUI.removeCar(rafle.visSum(), spillerListe[spillerNr].toString());
				GUI.setCar(1, spillerListe[spillerNr].toString());
				
				if (spillerListe[spillerNr].visTabt())
					gameOn = false;
				
				if (spillerListe[spillerNr].visBalance() >= 3000)
				{
					spillerListe[spillerNr].vundet();
					gameOn = false;
				}
				
				if (rafle.ekstraTur()) //Hvis man lander på The Werewall
					GUI.showMessage(spillerListe[spillerNr] + Tekst.EkstraTur); //Tekst i spillet
				else
					spillerNr++; //Næste spiller
				
			} while (spillerNr < antalSpillere + 1); //Slutter runde, når alle spillere har haft sin tur
			
		}
		
		spillerNr = 1; //Start afslutningen ved spiller 1
		
		do {
			for (deltagerNr = 1; deltagerNr < antalSpillere + 1; deltagerNr++) //Sammenligner alle spillerne (også medsig selv)
			{
				if (spillerListe[spillerNr].visTabt() == spillerListe[deltagerNr].visTabt() && spillerListe[spillerNr].visBalance() == spillerListe[deltagerNr].visBalance() && spillerListe[spillerNr] != spillerListe[deltagerNr]) //Hvis to spillere har tabt i sidste runde og har lige mange point
					Tres = Tekst.ResT1;
				else if (spillerListe[spillerNr].visTabt())
					Tres = spillerListe[spillerNr].toString() + Tekst.ResT2;
				
				if (spillerListe[spillerNr].visVundet() == spillerListe[deltagerNr].visVundet() && spillerListe[spillerNr].visBalance() == spillerListe[deltagerNr].visBalance() && spillerListe[spillerNr] != spillerListe[deltagerNr])
					Vres = Tekst.ResV1;
				else if (spillerListe[spillerNr].visVundet() == spillerListe[deltagerNr].visVundet() && spillerListe[spillerNr].visBalance() > spillerListe[deltagerNr].visBalance())
					Vres = spillerListe[spillerNr].toString() + Tekst.ResV2i1 + spillerListe[deltagerNr].toString() + Tekst.ResV2i2;
				else if (spillerListe[spillerNr].visVundet())
					Vres = spillerListe[spillerNr].toString() + Tekst.ResV3;
				
				spillerNr++;
			}
		} while(spillerNr < antalSpillere + 1); //Gentagelseved alle spillerne
		
		GUI.showMessage(Vres + Tres); //Beskrivelse af resultatet i spillet
		
		GUI.close(); //Spillet lukker
	}
	
}
